// samsting : this file is auto create.

#ifndef ALIYUN_Emr_ListConfigTypeResponse_H_
#define ALIYUN_Emr_ListConfigTypeResponse_H_

#include "core/acs_response.h"

namespace aliyun { namespace Emr {

class ListConfigTypeResponse : public AcsResponse {
public:
  ListConfigTypeResponse();

  class SecurityGroupType {
    friend class ListConfigTypeResponse;
  public:
    const string& GetName(void) const;
    const string& GetState(void) const;
    const string& GetId(void) const;
  private:
    string Name_;
    string State_;
    string Id_;
  }; // SecurityGroupType 


  class InstanceType {
    friend class ListConfigTypeResponse;
  public:
    const string& GetClassify(void) const;
    const string& GetState(void) const;
    const string& GetType(void) const;
    const string& GetCpuCore(void) const;
    const string& GetMemSize(void) const;
    bool GetHasCloudDisk(void) const;
    bool GetHasLocalDisk(void) const;
    bool GetHasLocalSSD(void) const;
    bool GetHasCloudSSD(void) const;
  private:
    string Classify_;
    string State_;
    string Type_;
    string CpuCore_;
    string MemSize_;
    bool   HasCloudDisk_;
    bool   HasLocalDisk_;
    bool   HasLocalSSD_;
    bool   HasCloudSSD_;
  }; // InstanceType 


  class EmrVerType {
    friend class ListConfigTypeResponse;
  public:

    class SubModule {
      friend class ListConfigTypeResponse;
      friend class EmrVerType;
    public:
      const string& GetName(void) const;
      const string& GetRequired(void) const;
      const string& GetOptional(void) const;
    private:
      string Name_;
      string Required_;
      string Optional_;
    }; // SubModule 

    const std::vector<SubModule>& GetSubModules(void) const;
    const string& GetName(void) const;
  private:
    std::vector<SubModule> SubModules_;
    string Name_;
  }; // EmrVerType 


  class ZoneType {
    friend class ListConfigTypeResponse;
  public:
    const std::vector<AvailableResourceCreateion>& GetAvailableResourceCreateionList(void) const;
    const std::vector<AvailableDiskCategories>& GetAvailableDiskCategoriesList(void) const;
    const string& GetName(void) const;
    const string& GetId(void) const;
  private:
    std::vector<AvailableResourceCreateion> AvailableResourceCreateionList_;
    std::vector<AvailableDiskCategories> AvailableDiskCategoriesList_;
    string Name_;
    string Id_;
  }; // ZoneType 

  const std::vector<SecurityGroupType>& GetsecurityGroupTypes(void) const;
  const std::vector<InstanceType>& GetinstanceTypes(void) const;
  const std::vector<EmrVerType>& GetEmrVerTypes(void) const;
  const std::vector<ZoneType>& GetZoneTypes(void) const;

private:
  std::vector<SecurityGroupType> securityGroupTypes_;
  std::vector<InstanceType> instanceTypes_;
  std::vector<EmrVerType> EmrVerTypes_;
  std::vector<ZoneType> ZoneTypes_;

protected:
  const char* BaseKey(void);
  void         UnmarshallerMap(std::map<string, string>& response_map);

};

} } // namespace aliyun { namespace Emr {

#endif // #ifndef ALIYUN_Emr_ListConfigTypeResponse_H_

// end of file 
